#include "light.h"
unsigned int *plcd =NULL;
#include "ev.h"
 
//将(x,y)处的像素点赋值为color
int Display(int color,int x,int y)
{
	if(x >= 0 && x <= 800 && y >= 0 && y <= 480)
	{
		//将color值写到帧缓冲区域特定位置(x,y)
		*(plcd + y*800+ x) = color;
		//plcd相当于一个二维数组
	}
}
 

int Lcd_Init()
{
	//打开帧缓冲设备
	int fd = open("/dev/fb0",O_RDWR);
	if(-1==fd)
	{
		perror("open error");
		return -1;
	}
	//操作映射区域--plcd为映射后返回的映射区域首地址(os帧缓冲区域)
	plcd =mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
}
 
//将屏幕像素全部置白--清屏
void Dis_wh()
{
	for(int i = 0;i < 480;i++)
	{
		for(int j = 0;j < 800;j++)
		{
			//将整个屏幕的所有像素点赋值为白色
			Display(0xffffff,j,i);
		}
	}
	
}
//画矩形
void Dis_qu()
{
	for(int i= 100;i<300;i++)
		{
			for(int j=100;j<600;j++)
			{
				Display(0xffffff,j,i);
			}
		}
}
 
//圆形
void Dis_cir()
{
    for(int i= 100;i<480;i++)
		{
			for(int j=100;j<800;j++)
			{ 
				//判断像素点是否在以(350,200)为圆心,100为半径的圆上或圆内
			    if((j-350)*(j-350)+(i-200)*(i-200)<=100*100)
				//绿+蓝=青
				Display(0x00ffff,j,i);
				if((j-400)*(j-400)+(i-275)*(i-275)<=100*100)
				//红+蓝=紫
				Display(0xff00ff,j,i);
				if((j-450)*(j-450)+(i-200)*(i-200)<=100*100)
				//红+绿=黄
				Display(0xffff00,j,i);
				//判断像素点是否在三个圆的交集部分
				if(((j-350)*(j-350)+(i-200)*(i-200)<=100*100)&&((j-400)*(j-400)+(i-275)*(i-275)<=100*100)&&((j-450)*(j-450)+(i-200)*(i-200)<=100*100))
				//红
				Display(0xff0000,j,i);
			}
		}
}
//三角形
void Dis_tri()
{
	for(int i = 0;i<480;i++)
		   {
			   for(int j = 0;j<800;j++)
			   {
					//直线i+j=400及其左下方的区域
					//三角形三顶点(0,0)(0,400)(400,0)
			   		if(i+j<=400)
					//红+蓝=紫
			   		Display(0xff00ff,j,i);
			   }
		   }
}
 
/*
void Dis_tri()
{
	for(int y = 0;y<480;y++)
		   {
			   for(int x = 0;x<800;x++)
			   {
			   		if(x>=100 && y<=300 && y>=100 && y<=-x+400&& y>=x)
			   		Display(0xff00ff,x,y);
			   }
		   }
}
*/
 
/*int main()
{
	Lcd_Init();
	 Dis_wh();
	//Dis_wh();
	//Dis_qu();
	//Dis_cir();
	Dis_tri();
	 
	return 0;
	
}*/
 